﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using WiimoteLib;

namespace IAWhiteBoard
{
    /// <summary>
    /// Interaktionslogik für MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
       private Wiimote wm;

       public MainWindow()
       {
           InitializeComponent();
       }

        // FIXME: wird nicht aufgerufen MainWindow_Loaded ist Eventhaendler wird von WPF aufgerufen
        void MainWindow_Loaded(object sender, EventArgs e)
        {            
            // neue Wiimote Instanz
            wm = new Wiimote();
            
            // dem event WiimoteChanged Methode hinzufuegen
            // TODO: wann wird WiimoteChanged ausgeloest??
            wm.WiimoteChanged += wm_WiimoteChanged;

            // dem event WiimoteExtensionChanged Methode hinzufuegen
            // TODO: Wann wird das Event ausgeloest??
            wm.WiimoteExtensionChanged += wm_WiimoteExtensionChanged;


        }

        private void wm_WiimoteExtensionChanged(object sender, WiimoteExtensionChangedEventArgs args)
        {
            if (args.Inserted)
            {
                wm.SetReportType(InputReport.IRExtensionAccel, true); // Daten zur Extension (Controller) returnen
            }
            else
            {
                wm.SetReportType(InputReport.IRAccel, true); // zurueck zum Ausgangsmodus
            }

        }

        private void wm_WiimoteChanged(object sender, WiimoteChangedEventArgs args)
        {
            // hole Statusinformation
            WiimoteState ws = args.WiimoteState;

            // FIXME: Status nicht auf Console ausgeben
            Console.WriteLine(ws.ButtonState.A);

        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            
        }
    }
}
